Skip to main content

Infix to Postfix Conversion

#include <stdio.h>
#include <ctype.h>

char stack[100];
int top = -1;

void push(char x)
{
top++;
stack[top] = x;
}

void display(char *ptr)
{
printf("\nElements in Stack:\n");
for (int i = 0; i <= top; i++)
{
printf(" %d", *(ptr + i));
}
}

char pop()
{
if (top == -1)
{
printf("\nUnderflow Error");
return -1;
}

else
{

return stack[top--];
}
}

int priority(char x)
{
if (x == '+' || x == '-')
{
return 1;
}

if (x == '*' || x == '/' || x == '%')
{
return 2;
}
return 0;
}

int main()
{
char exp[100];
char *e, x;
printf("Enter the expression : ");
scanf("%s", exp);
printf("\n");
e = exp;

while (*e != '\0')
{
if (isalnum(*e))
{
printf("%c ", *e);
}

else if (*e == '(')
{
push(*e);
}

else if (*e == ')')
{
while ((x = pop()) != '(')
{
printf("%c ", x);
}
}
else
{
if (priority(*e) <= priority(stack[top]))
{
printf("%c ", pop());
}

push(*e);
}
e++;
}
while (top != -1)
{
printf("%c ", pop());
}

printf("\n");
return 0;
}